﻿namespace MES.Server.API.Dto.QualityInspection_DTO
{
    /// <summary>
    /// 质检记录显示DTO（含生产工单名称、物料群组名称）
    /// </summary>
    public class QualityInspectionDto
    {
        public long Id { get; set; } // 质检记录ID
        public string InspectionNumber { get; set; } // 质检单号
        public long ProductionOrderId { get; set; } // 关联工单ID
        public string ProductionOrderName { get; set; } // 生产工单名称（关联显示）
        public long MaterialGroupId { get; set; } // 关联群组ID
        public string MaterialGroupName { get; set; } // 物料群组名称（关联显示）
        public int InspectedQuantity { get; set; } // 检测数量（=生产工单数量）
        public int QualifiedQuantity { get; set; } // 合格数量
        public int UnqualifiedQuantity { get; set; } // 不合格数量（自动计算）
        public decimal QualificationRate { get; set; } // 合格率（自动计算）
        public string Inspector { get; set; } // 检测人员
        public DateTime InspectionTime { get; set; } // 检测时间
    }

    /// <summary>
    /// 创建质检记录DTO（前端传入参数）
    /// </summary>
    public class CreateQualityInspectionDto
    {
        public long ProductionOrderId { get; set; } // 仅需传入生产工单ID（自动关联物料群组）
        public int QualifiedQuantity { get; set; } // 仅需输入合格数量
        public string Inspector { get; set; } // 检测人员
    }

    /// <summary>
    /// 更新质检记录DTO（前端传入参数）
    /// </summary>
    public class UpdateQualityInspectionDto
    {
        public long Id { get; set; } // 质检记录ID
        public long ProductionOrderId { get; set; } // 生产工单ID（可改）
        public int QualifiedQuantity { get; set; } // 合格数量（可改）
        public string Inspector { get; set; } // 检测人员（可改）
    }

    /// <summary>
    /// 二级联动下拉框DTO（生产工单+物料群组）
    /// </summary>
    public class ProductionCascaderDto
    {
        /// <summary>
        /// 生产工单列表（含生产数量，用于检测数量默认值）
        /// </summary>
        public List<ProductionItemDto> ProductionItems { get; set; } = new();

        /// <summary>
        /// 物料群组列表（用于联动筛选）
        /// </summary>
        public List<MaterialGroupItemDto> MaterialGroupItems { get; set; } = new();
    }

    /// <summary>
    /// 生产工单下拉项DTO
    /// </summary>
    public class ProductionItemDto
    {
        public long Id { get; set; } // 工单ID
        public string ProduceCode { get; set; } // 工单编号
        public string ProduceName { get; set; } // 工单名称
        public long MaterialGroupId { get; set; } // 关联物料群组ID（用于联动）
        public int ProduceNum { get; set; } // 生产数量（用于检测数量默认值）
    }

    /// <summary>
    /// 物料群组下拉项DTO
    /// </summary>
    public class MaterialGroupItemDto
    {
        public long Id { get; set; } // 群组ID
        public string MaterialGroupCode { get; set; } // 群组编码
        public string MaterialGroupName { get; set; } // 群组名称
    }
}
